package com.ruoyi.OutboundManagement.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 出库操作对象 delivery_operation
 * 
 * @author ruoyi
 * @date 2024-07-12
 */
public class DeliveryOperation extends BaseEntity
{
    private static final long serialVersionUID = 1L;


    private List<Product> products; // 商品列表

    public List<Product> getProducts() {
        return products;
    }

    public void setProducts(List<Product> products) {
        this.products = products;
    }

    /** 出入库单id */
    private Long deliveryId;


    /** 物料名称 */
    @Excel(name = "物料名称")
    private String materialName;

    /** 出库数量 */
    @Excel(name = "出库数量")
    private Long shipmentQuantity;

    /** 物品的规格型号 */
    @Excel(name = "物品的规格型号")
    private String guige;

    /** 出入库种类 */
    @Excel(name = "出入库种类")
    private String shippingType;

    /** 单位 */
    @Excel(name = "单位")
    private String unit;

    /** 单价 */
    @Excel(name = "单价")
    private BigDecimal amount;

    /** 操作员 */
    @Excel(name = "操作员")
    private String operator;

    /** 出货时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出货时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date outboundTime;

    /** 库位编号 */
    @Excel(name = "库位编号")
    private String materialNumber;

    /** 库区编号 */
    @Excel(name = "库区编号")
    private String reservoirNumber;

    /** 物料编码 */
    @Excel(name = "物料编码")
    private String materialCode;

    /** 生产日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date productionDate;

    /** 有效期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date validity;

    /** 供应商名称 */
    @Excel(name = "供应商名称")
    private String supplierName;

    /** 批次号 */
    @Excel(name = "批次号")
    private String batchNumber;

    /** 物料id PK */
    @Excel(name = "物料id PK")
    private Long materialId;


//    /** 库存预警id PK */
//    @Excel(name = "库存预警id PK")
//    private Long warningId;


    /** 质检状态   1-待检 2-合格  3-不合格 */
    @Excel(name = "质检状态   1-待检 2-合格  3-不合格")
    private String zhijian;

    /** 入库总数 */
    @Excel(name = "入库总数")
    private Long totalAmount;

    /** 单据编号 */
    @Excel(name = "单据编号")
    private String documentNumber;


    /** 单价 */
    @Excel(name = "单价")
    private String weight;

    /** 创建人 */
    @Excel(name = "创建人")
    private String createUser;

    /** 出入库状态 1 入库  2 出库 */
    @Excel(name = "出入库状态")
    private String storageStatus;

    /** 数量 */
    @Excel(name = "数量")
    private Long magnitude;

    /** 剩余数量 */
    @Excel(name = "剩余数量")
    private Long inventoryDifference;

    /** 入库类型  1 -生产入库  2-退料入库  3-销售退货 4-收货入库 5-外采入库 */
    @Excel(name = "入库类型")
    private String libraryType;


    /** 最大值 */
    @Excel(name = "最大值")
    private Long maximumInventory;

    /** 最小值 */
    @Excel(name = "最小值")
    private Long minimumStock;

    /** 年 */
    @Excel(name = "年")
    private Long   ProductionYear;

    /** 月 */
    @Excel(name = "月")
    private Long   ProductionMonth;


    /** 数量 */
    @Excel(name = "数量")
    private Long TotalProduction;


    /** 入库质检日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "质检日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date  rjdate;


    /** 出库质检日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出库质检日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date  cjdate;


    public Date getRjdate() {
        return rjdate;
    }

    public void setRjdate(Date rjdate) {
        this.rjdate = rjdate;
    }

    public Date getCjdate() {
        return cjdate;
    }

    public void setCjdate(Date cjdate) {
        this.cjdate = cjdate;
    }

    public Long getProductionYear() {
        return ProductionYear;
    }

    public void setProductionYear(Long productionYear) {
        ProductionYear = productionYear;
    }

    public Long getProductionMonth() {
        return ProductionMonth;
    }

    public void setProductionMonth(Long productionMonth) {
        ProductionMonth = productionMonth;
    }

    public Long getTotalProduction() {
        return TotalProduction;
    }

    public void setTotalProduction(Long totalProduction) {
        TotalProduction = totalProduction;
    }

    public Long getMaximumInventory() {
        return maximumInventory;
    }

    public void setMaximumInventory(Long maximumInventory) {
        this.maximumInventory = maximumInventory;
    }

    public Long getMinimumStock() {
        return minimumStock;
    }

    public void setMinimumStock(Long minimumStock) {
        this.minimumStock = minimumStock;
    }

//    public Long getWarningId() {
//        return warningId;
//    }
//
//    public void setWarningId(Long warningId) {
//        this.warningId = warningId;
//    }

    public String getLibraryType() {
        return libraryType;
    }

    public void setLibraryType(String libraryType) {
        this.libraryType = libraryType;
    }

    public Long getInventoryDifference() {
        return inventoryDifference;
    }

    public void setInventoryDifference(Long inventoryDifference) {
        this.inventoryDifference = inventoryDifference;
    }

    public Long getMagnitude() {
        return magnitude;
    }

    public void setMagnitude(Long magnitude) {
        this.magnitude = magnitude;
    }

    public String getCreateUser() {
        return createUser;
    }

    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }

    @Override
    public Date getCreateTime() {
        return createTime;
    }

    @Override
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createTime;


    public String getWeight() {
        return weight;
    }

    public void setWeight(String weight) {
        this.weight = weight;
    }

    public void setDeliveryId(Long deliveryId)
    {
        this.deliveryId = deliveryId;
    }

    public Long getDeliveryId() 
    {
        return deliveryId;
    }
    public void setMaterialName(String materialName) 
    {
        this.materialName = materialName;
    }

    public String getMaterialName() 
    {
        return materialName;
    }


    public Long getShipmentQuantity() {
        return shipmentQuantity;
    }

    public void setShipmentQuantity(Long shipmentQuantity) {
        this.shipmentQuantity = shipmentQuantity;
    }

    public void setGuige(String guige)
    {
        this.guige = guige;
    }

    public String getGuige() 
    {
        return guige;
    }
    public void setShippingType(String shippingType) 
    {
        this.shippingType = shippingType;
    }

    public String getShippingType() 
    {
        return shippingType;
    }
    public void setUnit(String unit) 
    {
        this.unit = unit;
    }

    public String getUnit() 
    {
        return unit;
    }
    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }
    public void setOperator(String operator) 
    {
        this.operator = operator;
    }

    public String getOperator() 
    {
        return operator;
    }
    public void setOutboundTime(Date outboundTime) 
    {
        this.outboundTime = outboundTime;
    }

    public Date getOutboundTime() 
    {
        return outboundTime;
    }
    public void setMaterialNumber(String materialNumber) 
    {
        this.materialNumber = materialNumber;
    }

    public String getMaterialNumber() 
    {
        return materialNumber;
    }
    public void setReservoirNumber(String reservoirNumber) 
    {
        this.reservoirNumber = reservoirNumber;
    }

    public String getReservoirNumber() 
    {
        return reservoirNumber;
    }
    public void setMaterialCode(String materialCode) 
    {
        this.materialCode = materialCode;
    }

    public String getMaterialCode() 
    {
        return materialCode;
    }
    public void setProductionDate(Date productionDate) 
    {
        this.productionDate = productionDate;
    }

    public Date getProductionDate() 
    {
        return productionDate;
    }
    public void setValidity(Date validity) 
    {
        this.validity = validity;
    }

    public Date getValidity() 
    {
        return validity;
    }
    public void setSupplierName(String supplierName) 
    {
        this.supplierName = supplierName;
    }

    public String getSupplierName() 
    {
        return supplierName;
    }
    public void setBatchNumber(String batchNumber) 
    {
        this.batchNumber = batchNumber;
    }

    public String getBatchNumber() 
    {
        return batchNumber;
    }
    public void setMaterialId(Long materialId) 
    {
        this.materialId = materialId;
    }

    public Long getMaterialId() 
    {
        return materialId;
    }

    public String getZhijian() {
        return zhijian;
    }

    public void setZhijian(String zhijian) {
        this.zhijian = zhijian;
    }

    public Long getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(Long totalAmount) {
        this.totalAmount = totalAmount;
    }

    public void setDocumentNumber(String documentNumber)
    {
        this.documentNumber = documentNumber;
    }

    public String getDocumentNumber() 
    {
        return documentNumber;
    }

    public String getStorageStatus() {
        return storageStatus;
    }

    public void setStorageStatus(String storageStatus) {
        this.storageStatus = storageStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("deliveryId", getDeliveryId())
            .append("materialName", getMaterialName())
            .append("shipmentQuantity", getShipmentQuantity())
            .append("guige", getGuige())
            .append("shippingType", getShippingType())
            .append("unit", getUnit())
            .append("amount", getAmount())
            .append("operator", getOperator())
            .append("outboundTime", getOutboundTime())
            .append("materialNumber", getMaterialNumber())
            .append("reservoirNumber", getReservoirNumber())
            .append("materialCode", getMaterialCode())
            .append("productionDate", getProductionDate())
            .append("validity", getValidity())
            .append("supplierName", getSupplierName())
            .append("batchNumber", getBatchNumber())
            .append("materialId", getMaterialId())
            .append("zhijian", getZhijian())
            .append("remark", getRemark())
            .append("totalAmount", getTotalAmount())
            .append("documentNumber", getDocumentNumber())
            .append("weight",getWeight())
            .append("createUser",getCreateUser())
            .append("createTime",getCreateTime())
            .append("storageStatus",getStorageStatus())
            .append("magnitude",getMagnitude())
            .append("inventoryDifference",getInventoryDifference())
            .append("libraryType",getLibraryType())
            .append("products",getProducts())
//            .append("warningId",getWarningId())
            .append("maximumInventory",getMaximumInventory())
            .append("minimumStock",getMinimumStock())
                .append("ProductionYear",getProductionYear())
                .append("ProductionMonth",getProductionMonth())
                .append("TotalProduction",getTotalProduction())
                .append("rjdate",getRjdate())
                .append("cjdate",getCjdate())
            .toString();
    }
}
